package pe.edu.upc.dsd.epica.web;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.web.context.support.WebApplicationContextUtils;
import pe.edu.upc.dsd.epica.model.Establecimiento;
import pe.edu.upc.dsd.epica.service.EstablecimientoService;
import pe.edu.upc.dsd.epica.util.Session;

public class LoginServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	private EstablecimientoService empresaServiceWs;
	private final static Logger logger = Logger.getLogger(LoginServlet.class);
	
	@Override
	public void init(ServletConfig config) throws ServletException {

		this.empresaServiceWs = WebApplicationContextUtils
				.getWebApplicationContext(config.getServletContext()).getBean(
						"establecimientoServiceClient",
						EstablecimientoService.class);
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.getRequestDispatcher("login.jsp").forward(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String login = req.getParameter("login");
		String pass = req.getParameter("password");

		try {
			
			Establecimiento establecimiento = 
					empresaServiceWs.findByUsuarioAndPassword(login, pass);

			if (establecimiento != null) {
				Session.AgregarValor(req.getSession(), "establecimiento",establecimiento);
				
				req.setAttribute("establecimiento", establecimiento);
				req.getRequestDispatcher("index.jsp").forward(req, resp);
			} else {
				req.setAttribute("error", "El usuario no existe");
				req.getRequestDispatcher("login.jsp").forward(req, resp);
			}
		} catch (Exception e) {
			req.setAttribute("error", "A ocurrido un error.");
			req.getRequestDispatcher("login.jsp").forward(req, resp);
			logger.error("Titulo:\nLogeo Usuario [UsuarioService].\nMensaje:\n"+e.getMessage());
		}

	}

}
